#include<iostream>
#include<string>
#include<cstring>
using namespace std;
char s1[305], s2[305];
int a[305], b[305], c[305], tmp[305];//a为被除数 b为除数 c为商
//运算从1开始，0没有用到。[0]可以放数组位数。
void init(int *x)
{
	char s[305];
	cin >> s;
	x[0] = strlen(s);
	for (int i = 0; i < x[0]; i++)
	{
		x[x[0] - i] = s[i] - '0';
	}
	//要做减法，倒序存储字符数组。
}
 
int compare(int a[],int b[])
{
	if(a[0] > b[0]) return 1;//比较a和b的位数。如果a的位数大于b的位数，那么a>b
	if (a[0] < b[0]) return -1;
	for (int i = a[0]; i > 0; i--)
	{
		if (a[i] > b[i]) return 1;
		if (a[i] < b[i]) return -1; 
	}//若位数一样，比较最高位，最高位若一样，比较次一位。
	return 0;
}
 
void jian(int a[], int b[])
{
	for (int i = 1; i <= a[0]; i++)
	{
		if (a[i] < b[i])
		{
			a[i + 1]--;
			a[i] = a[i] + 10;
		}
		a[i] = a[i] - b[i];
	}
	while (a[a[0]] == 0 && a[0] > 0) a[0]--;//删除前导0
}
 
void numcpy(int p[], int q[], int n)
{
	for (int i = 1; i <= p[0]; i++) q[i + n - 1] = p[i];
	q[0] = p[0] + n - 1;
}//已经转置了，  左移n位。将q整体移动n位放到q数组里。
 
void print(int a[])
{
	if (a[0] == 0) { cout << 0; return; }
	for (int i = a[0]; i > 0; i--) cout << a[i];
	return;
}
int main()
{
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	init(a);//输入a
	init(b);//输入b
	memset(c, 0, sizeof(c));
	c[0] = a[0] - b[0] + 1;//商的位数。 
	//如果被除数首位 > 除数的首位，则商的位数 = 被除数位数-除数的位数+1；
	//如果被除数首位 < 除数的首位，则商的位数 = 被除数位数-除数的位数
	//被除数首位 = 除数的首位， 要看两者的次位，以此类推。
	for (int i = c[0]; i >= 1; i--)
	{
		memset(tmp, 0, sizeof(tmp));
		numcpy(b, tmp, i);
		while (compare(a, tmp) >= 0)
		{
			c[i]++;//减几次c[i]就是几。
			jian(a, tmp);//减几次。
		}
	}
	while (c[c[0]] == 0 && c[0] > 0) c[0]--;//去除前导0 
	print(c);//商
	cout << endl;
	print(a);//余数
	return 0;
}